perm filename DSKSIM.FAI[CMS,LCS]2 blob
sn#419997 filedate 1979-02-23 generic text, type T, neo UTF8
00100 TITLE SIMU
00200 EXTERNAL $I
00300 A←1 ↔ X←2 ↔ Y←3 ↔ SP←4 ↔ PS←5 ↔ PC←6
00400 IR←7 ↔ B←←10 ↔ C←←11 ↔ D←←12 ↔ F←←16
00500 E←←13 ↔ DR←←14 ↔ MA←←15 ↔ P←17 ↔ NBUFS←←4
00600 CBIT←←1 ↔ ZBIT←←2 ↔ IBIT←←4 ↔ DBIT←←10
00700 BRKBIT←←20 ↔ VBIT←←100 ↔ NBIT←←200
00800 RSTV←177774 ↔ NMIV←177772 ↔ IRQV←177776
00900 PONE←←400 ↔ NEG1←←377 ↔ BNINE←←400
01000 ZHW←777400 ↔ ZHW16←600000 ↔ IOBIT←200000
01100 IOMSK←400000 ↔ RAMBIT←100000
01200
01300 BRK ←←0
01400 ORAIX ←←1
01500 ORAZ ←←5
01600 ASLZ ←←6
01700
01800 PHP ←10
01900 ORAI ←11
02000 ASLA ←12
02100 ORA ←15
02200 ASL ←16
02300
02400 BPL ←20
02500 ORAIY ←21
02600 ORAZX ←25
02700 ASLZX ←26
02800
02900 CLC ←30
03000 ORAY ←31
03100 ORAX ←35
03200 ASLX ←36
03300
03400 JSR ←40
03500 ANDIX ←41
03600 BITZ ←44
03700 ANDZ ←45
03800 ROLZ ←46
03900
04000 PLP ←50
04100 ANDI ←51
04200 ROLA ←52
04300 BIT ←54
04400 AND ←55
04500 ROL ←56
00100 BMI ←60
00200 ANDIY ←61
00300 ANDZX ←65
00400 ROLZX ←66
00500
00600 SEC ←70
00700 ANDY ←71
00800 ANDX ←75
00900 ROLX ←76
01000
01100 RTI ←100
01200 EORIX ←101
01300 EORZ ←105
01400 LSRZ ←106
01500
01600 PHA ←110
01700 EORI ←111
01800 LSRA ←112
01900 JMP ←114
02000 EOR ←115
02100 LSR ←116
02200
02300 BVC ←120
02400 EORIY ←121
02500 EORZX ←125
02600 LSRZX ←126
02700
02800 CLI ←130
02900 EORY ←131
03000 EORX ←135
03100 LSRX ←136
03200
03300 RTS ←140
03400 ADCIX ←141
03500 ADCZ ←145
03600 RORZ ←146
03700
03800 PLA ←150
03900 ADCI ←151
04000 RORA ←152
04100 JMPIN ←154
04200 ADC ←155
04300 ROR ←156
04400
04500 BVS ←160
04600 ADCIY ←161
04700 ADCZX ←165
04800 RORZX ←166
04900
05000 SEI ←170
05100 ADCY ←171
05200 ADCX ←175
05300 RORX ←176
05400
05500 STAIX ←201
05600 STYZ ←204
05700 STAZ ←205
05800 STXZ ←206
05900
06000 DEY ←210
06100 TXA ←212
06200 STY ←214
06300 STA ←215
06400 STX ←216
00100 BCC ←220
00200 STAIY ←221
00300 STYZX ←224
00400 STAZX ←225
00500 STXZY ←226
00600
00700 TYA ←230
00800 STAY ←231
00900 TXS ←232
01000 STAX ←235
01100
01200 LDYI ←240
01300 LDAIX ←241
01400 LDXI ←242
01500 LDYZ ←244
01600 LDAZ ←245
01700 LDXZ ←246
01800
01900 TAY ←250
02000 LDAI ←251
02100 TAX ←252
02200 LDY ←254
02300 LDA ←255
02400 LDX ←256
02500
02600 BCS ←260
02700 LDAIY ←261
02800 LDYZX ←264
02900 LDAZX ←265
03000 LDXZY ←266
03100
03200 CLV ←270
03300 LDAY ←271
03400 TSX ←272
03500 LDYX ←274
03600 LDAX ←275
03700 LDXY ←276
00100 CPYI ←300
00200 CMPIX ←301
00300 CPYZ ←304
00400 CMPZ ←305
00500 DECZ ←306
00600
00700 INY ←310
00800 CMPI ←311
00900 DEX ←312
01000 CPY ←314
01100 CMP ←315
01200 DEC ←316
01300
01400 BNE ←320
01500 CMPIY ←321
01600 CMPZ ←325
01700 DECZX ←326
01800
01900 CLD ←330
02000 CMPY ←331
02100 CMPX ←335
02200 DECX ←336
02300
02400 CPXI ←340
02500 SBCIX ←341
02600 CPXZ ←344
02700 SBCZ ←345
02800 INCZ ←346
02900
03000 INX ←350
03100 SBCI ←351
03200 NOP ←352
03300 CPX ←354
03400 SBC ←355
03500 INC ←356
03600
03700 BEQ ←360
03800 SBCIY ←361
03900 SBCZX ←365
04000 INCZX ←366
04100
04200 SED ←370
04300 SBCY ←371
04400 SBCX ←375
04500 INCX ←376
00100 ZWD: -1,,777400
00200 ZWD16: -1,,600000
00300 PDL: BLOCK 100
00400
00500 R: BYTE (7) 175,175,175,"O","A"
00600 BYTE (7) 175,";","X",175,";"
00700 BYTE (7) "Y",175,";","S","P"
00800 BYTE (7) 175,";","P","S",175
00900 BYTE (7) ";","P","C",175,";"
01000 BYTE (7) 175,175,175,"C","I"
01100 BYTE (7) "R",175,";"
01200
01300 SS: BYTE (7) "X","C","U","T","E"
01400 BYTE (7) 175,"B",175,"P"
01500
01600 STAR: RESET
01700 HRLZI MEM
01800 HRRI MEM+1
01900 SETOM MEM
02000 BLT MEM+77777
02100 MAP: MOVE P,[PDPO: IOWD 100,PDL]
02200 SETZ X,
02300 MOVE D,[RAMBIT,,RAMBIT]
02400 PUSHJ P,MEMDF
02500 PUSHJ P,DEFA
02600 AOJ X,
02700 SETZ D,
02800 PUSHJ P,MEMDF
02900 PUSHJ P,DEFA
03000 AOJ X,
03100 MOVE D,[IOMSK,,IOMSK]
03200 PUSHJ P,MEMDF
03300 PUSHJ P,DEFA
03400
03500 GFILE: CLRBFI
03600 OUTSTR [ASCIZ/
03700 DMP FILE = /]
03800 PUSHJ P,GNAME
03900 OPEN 11,[14↔'DSK '↔IBUF]
04000 JRST 4,.
04100 INBUF 11,NBUFS
04200 LOOKUP 11,FILNAM
04300 CAIA
04400 PUSHJ P,LOADER
04500
04600 ZRG: MOVE [1,,2]
04700 SETZ A,
04800 BLT PC
04900 RST: MOVE P,PDPO
05000 PUSHJ P,SETRST
05100 JSR $I
05200
05300 FETCH: SKIPE E,IFLG#
05400 PUSHJ P,INTR
05500 PUSHJ P,IFTCH
05600 HRRZI IR,(DR)
05700 XCUTE: PUSHJ P,@INSTBL(IR)
05800 JRST FETCH
05900
06000 INTR: CAIN E,RSTV
06100 JRST RES
06200 TRNE E,-1
06300 JRST NOCK
06400 TRNE PS,IBIT
06500 POPJ P,
06600 HRRZI E,IRQV
06700 MOVEM E,IFLG
06800 NOCK: PUSHJ P,PUPC+1
06900 PUSHJ P,@INSTBL+PHP
07000 RES: HRRZ PC,IFLG
07100 TRO PS,IBIT
07200 HRRZI DR,JMP
07300 SETZ E,
07400 HRRM E,IFLG
07500 AOS (P)
07600 POPJ P,
00100 LOADER: PUSHJ P,INP+1
00200 HRRZI X,200
00300 ADD X,IBUF+2
00400 HRLZI Y,-100000
00500 LOAD: PUSHJ P,INP
00600 HRLZ A,1(X)
00700 AOBJP X,GIN
00800 GMO: HRR A,1(X)
00900 ORM A,MEM(Y)
01000 AOBJP Y,DONE
01100 AOBJN X,LOAD+1
01200 JRST LOAD
01300
01400 DONE: POPJ P,
01500
01600 GIN: PUSHJ P,INP
01700 JRST GMO
01800
01900 INP: HRRM X,IBUF+1
02000 IN 11,
02100 JRST SETX
02200 STATO 11,20000
02300 JRST 4,.
02400 POP P,
02500 POPJ P,
02600
02700 SETX: HRRZ X,IBUF+2
02800 MOVNI X,(X)
02900 HRLZI X,(X)
03000 HRR X,IBUF+1
03100 POPJ P,
03200
03300 DEFA: MOVE DR,BTBL(X)
03400 MOVEM D,-1(DR)
03500 BLT DR,@DTBL(X)
03600 POPJ P,
03700
03750 ;Block start addresses.
03800 BTBL: MEM,,MEM+1 ;RAM
04000 MEM+76000,,MEM+76001 ;PROM
04050 MEM+4000,,MEM+4001 ;I/O
04100
04150 ;Last word of blocks.
04200 DTBL: MEM+777 ;RAM
04400 MEM+77777 ;PROM
04450 MEM+17777 ;I/O
04500
04600 STRTBL: [ASCIZ/
04700 RAM BLOCK (ADR ∨ L:H) = /]
04800 [ASCIZ/
04900 ROM BLOCK (ADR ∨ L:H) = /]
05000 [ASCIZ*
05100 I/O BLOCK (ADR ∨ L:H) = *]
00100 ERRO: OUTSTR [ASCIZ/ ???
00200 /]
00300 MEMDF: CLRBFI
00400 OUTSTR @STRTBL(X)
00500 INCHWL A
00600 CAIN A,15
00700 POPJ P,
00800 PUSHJ P,INNUM
00900 TDNE ZWD16
01000 JRST ERRO
01100 HRRZ DR,
01200 INCHRS A
01300 JRST ERRO
01400 CAIN A,12
01500 JRST ONEAD
01600 PUSHJ P,INNUM
01700 TDNE ZWD16
01800 JRST ERRO
01900 MKIT: HRRZI E,(DR)
02000 LSH DR,-1
02100 ADDI DR,MEM
02200 HRRZ MA,
02300 LSH MA,-1
02400 CAILE DR,MEM(MA)
02500 JRST ERRO
02600 AOS (P) ;FOR NOT DEFALT
02700 ANDI E,1
02800 JUMPE E,EVEN
02900 HRRM D,(DR)
03000 CAIL DR,MEM(MA)
03100 JRST MEMDF
03200 AOJ DR,
03300 EVEN: ANDI 1
03400 JUMPN MOV
03500 HLLM D,MEM(MA)
03600 CAIL DR,MEM(MA)
03700 JRST MEMDF
03800 SOJ MA,
03900 MOV: MOVEM D,(DR)
04000 CAIL DR,MEM(MA)
04100 JRST MEMDF
04200 HRLI DR,(DR)
04300 AOJ DR,
04400 BLT DR,MEM(MA)
04500 JRST MEMDF
04600
04700 ONEAD: HRRZI (DR)
04800 JRST MKIT
04900
05000 INNUM: SETZ
05100 CAIL A,60
05200 CAILE A,67
05300 POPJ P,
05400 IMULI 10
05500 ADDI -60(A)
05600 INCHRS A
05700 POPJ P,
05800 JRST INNUM+1
00100 MTST: HRRZI D,(DR)
00200 LSH DR,-1
00300 ANDI D,1
00400 XCT POTBL(D)
00500 TRNE ZHW ;TEST FOR ROM
00600 SKIPL C, ;TEST FOR RAM
00700 POPJ P,
00800 NRAM: TRNN IOBIT
00900 JRST IO
01000 ILMEM: JSR $I
01100 POPJ P,
01200
01300 POTBL: HLRE MEM(DR)
01400 HRRE MEM(DR)
01500
01600 UDO: JSR $I
01700 POPJ P,
01800
01900 MFTCH: HRRZI DR,(MA)
02000 PUSHJ P,MTST
02100 TDZ ZWD
02200 POPJ P,
02300
02400 IFTCH: HRRZI DR,(PC)
02500 PUSHJ P,MTST
02600 TDZ ZWD
02700 HRRZ DR,
02800 AOJ PC,
02900 TRZ PC,ZHW16
03000 POPJ P,
03100
03200 AFTCH: PUSHJ P,IFTCH
03300 HRRZI MA,(DR)
03400 PUSHJ P,IFTCH
03500 LSH 10
03600 OR MA,
03700 POPJ P,
03800
03900 DPTBL: HRLM MEM(DR)
04000 HRRM MEM(DR)
04100
04200 MEMDP: TDZ ZWD
04300 HRRZ D,
04400 HRRZI DR,(MA)
04500 LSH DR,-1
04600 ANDI MA,1
04700 XCT POTBL(MA)
04800 TRNN ZHW
04900 JRST WROM
05000 SETZ C,
05100 SKIPG
05200 PUSHJ P,NRAM
05300 ANDI ZHW
05400 ORI (D)
05500 XCT DPTBL(MA)
05600 POPJ P,
05700
05800 WROM: JSR $I
05900 POPJ P,
00050 IO: MOVE ,[IOMSK,,IOMSK] ;For fetch from I/O.
00075 POPJ P, ;For no I/O.
00100 ;IO: TDZ D,ZWD
00200 SKIPL C
00300 JRST WRT
00400 SKIPE D
00500 JRST RDCON
00600 JRST CKDD
00700 WRT: SKIPE MA ;TEST FOR CONTROL REG
00800 POPJ P,
00900 CKDD: HRRZ E,MEM(DR) ;GET CON REG
01000 TRNN E,4 ;DD BIT
01100 POPJ P, ;DD REG
01200 SKIPL C
01300 JRST RITEIT
01400 TRZ E,300 ;RESET FLGS
01500 HRRM E,MEM(DR)
01600 TRNE DR,1 ;TEST FOR PRA (KB)
01700 JRST READB
01800 HRRZ PREGA
01900 POPJ P,
02000 READB: HRRZ PREGB
02100 POPJ P,
02200
02300 PREGA: 0
02400 PREGB: 0
02500
02600 RDCON: TRNE DR,1
02700 POPJ P, ;CRB
02800 HRRZ C,
02900 ANDI C,6
03000 CAIE C,6 ;CK INPUT ENB
03100 POPJ P,
03200 INCHRW E ;CHECK FOR INPUT
03300 CAIN E,"I"∨200 ;CK FOR NMI
03400 JRST SETNMI
03500 CAIN E,"I" ;CK FOR IRQ
03600 JRST SETIRQ
03700 CAIN E,"R" ;CK FOR RST
03800 JRST SETRST
03900 ANDI E,17
04000 CAILE E,11
04100 POPJ P,
04200 HRRZM E,PREGA
04300 TRO 200 ;SET KB FLG BIT
04400 POPJ P,
04500
04600 SETIRQ: SETO E,
04700 HRLM E,IFLG
04800 POPJ P,
04900 SETNMI: HRRZI E,NMIV
05000 CAIA
05100 SETRST: HRRZI E,RSTV
05200 HRRM E,IFLG
05300 POPJ P,
05400
05500 RITEIT: TRNE DR,1
05600 JRST LEDO
05700 HRRZM D,PREGA ;SAVE IT
05800 JRST POPIT
05900
06000 LEDO: HRRZM D,PREGB ;SAVE IT
06100 ANDI E,54
06200 CAIE E,54 ;CHECK FOR PULSE SET
06300 JRST POPIT
06400 HRRZI C,4
06500 STRCH: LSHC D,-1
06600 LSH E,-6
06700 SOJG C,STRCH
06800 OR E,[ASCID/0000 /]
06900 CAIGE D,2
07000 JRST DPYVAL
07100 CAILE D,5
07200 JRST POPIT
07300 MOVNI D,(D)
07400 MOVEM E,DPYTBL+5(D)
07500 JRST DPYS
07600 DPYVAL: MOVNI D,(D)
07700 MOVEM E,VALTBL+1(D)
07800
07900 DPYS: PUSHJ P,DPYIT
08000 OUTSTR DPYTBL
08100
08200 POPIT: POP P,C
08300 POPJ P,
08400
08500 DPY: BYTE (8) 46,0,46 (3) 1,2,1,4
08600 BYTE (8) 2,1,10 (3)3,4,5,4
08700
08800 ASCID/
08900
09000
09100 /
09200 DPYTBL: BLOCK 4
09300 ASCID/
09400
09500
09600 /
09700 VALTBL: BLOCK 2
09800 ASCID/
09900
10000
10100
10200
10300
10400
10500
10600 /
10700 0
00100 dddlin ←←20000
00200
00300 DPYIT: MOVEM SVZ#
00400
00500
00600 outdd: dpypos -620
00700 dpysiz 5001
00800 movni 1
00900
01000 getlin
01100
01200 tlnn dddlin
01300 JRST BACK
01400
01500 DDUPG BUFFPT
01600
01700 AOS (P)
01800 BACK: MOVE SVZ
01900 POPJ P,
02000
02100 SVAC: BLOCK 17
02200
02300 buffpt: 200000,,DPY
02400 23
02500 0
02600 DPY+1
02700
02800 erase: ddupg erspt
02900 popj p,
03000 ersbuf: BYTE (8) 17,0,46 (3) 1,2,1,4 ;funct. code, chan select, funct. code
03100 0
03200 erspt: ersbuf
03300 erspt-ersbuf
03400 0
03500 0
00100 ZPAGE: PUSHJ P,IFTCH
00200 HRRZI MA,(DR)
00300 PUSHJ P,MFTCH
00400 POPJ P,
00500
00600 ZPX: PUSHJ P,IFTCH
00700 HRRZI MA,(DR)
00800 ADDI MA,(X)
00900 TRZ MA,ZHW
01000 PUSHJ P,MFTCH
01100 POPJ P,
01200
01300 ZPY: PUSHJ P,IFTCH
01400 HRRZI MA,(DR)
01500 ADDI MA,(X)
01600 TRZ MA,ZHW
01700 PUSHJ P,MFTCH
01800 POPJ P,
01900
02000 ABS: PUSHJ P,AFTCH
02100 PUSHJ P,MFTCH
02200 POPJ P,]
02300
02400 ABX: PUSHJ P,AFTCH
02500 ADDI MA,(X)
02600 TRZ MA,ZHW16
02700 PUSHJ P,MFTCH
02800 POPJ P,
02900
03000 ABY: PUSHJ P,AFTCH
03100 ADDI MA,(Y)
03200 TRZ MA,ZHW16
03300 PUSHJ P,MFTCH
03400 POPJ P,
03500
03600 INDX: PUSHJ P,IFTCH
03700 ADDI (X)
03800 TRZ ZHW
03900 HRRZ MA,
04000 PUSHJ P,MFTCH
04100 HRRZ F,
04200 AOJ MA,
04300 PUSHJ P,MFTCH
04400 LSH 10
04500 OR F,
04600 HRRZI MA,(F)
04700 PUSHJ P,MFTCH
04800 POPJ P,
04900
05000 INDY: PUSHJ P,ZPAGE
05100 HRRZ F,
05200 AOJ MA,
05300 PUSHJ P,MFTCH
05400 LSH 10
05500 ADDI (F)
05550 ADDI (Y)
05600 HRRZ MA,
05700 PUSHJ P,MFTCH
05800 POPJ P,]
00100 LDIM: PUSHJ P,IFTCH
00200 PUSHJ P,NZTST
00300 POPJ P,
00400 LDZ: PUSHJ P,ZPAGE
00500 PUSHJ P,NZTST
00600 POPJ P,
00700 LDAAB: PUSHJ P,ABS
00800 PUSHJ P,NZTST
00900 POPJ P,
01000 LDAABX: PUSHJ P,ABX
01100 PUSHJ P,NZTST
01200 POPJ P,
01300 LDAABY: PUSHJ P,ABY
01400 PUSHJ P,NZTST
01500 POPJ P,]
01600 LDZX: PUSHJ P,ZPX
01700 PUSHJ P,NZTST
01800 POPJ P,
01900 LDZY: PUSHJ P,ZPY
02000 PUSHJ P,NZTST
02100 POPJ P,
02200 LDIX: PUSHJ P,INDX
02300 PUSHJ P,NZTST
02400 POPJ P,
02500 LDIY: PUSHJ P,INDY
02600 PUSHJ P,NZTST
02700 POPJ P,
02800 STZ: PUSHJ P,IFTCH
02900 HRRZ MA,
03000 HRRZI (B)
03100 PUSHJ P,MEMDP
03200 POPJ P,
03300 STAAB: PUSHJ P,AFTCH
03400 HRRZI (B)
03500 PUSHJ P,MEMDP
03600 POPJ P,
03700 STIX: PUSHJ P,INDX
03800 HRRZI (B)
03900 PUSHJ P,MEMDP
04000 POPJ P,
04100 STIY: PUSHJ P,INDY
04200 HRRZI (B)
04300 PUSHJ P,MEMDP
04400 POPJ P,
04500 STZX: PUSHJ P,ZPX
04600 HRRZI (B)
04700 PUSHJ P,MEMDP
04800 POPJ P,
04900 STZY: PUSHJ P,ZPY
05000 HRRZI (B)
05100 PUSHJ P,MEMDP
05200 POPJ P,
05300 STAABX: PUSHJ P,ABX
05400 HRRZI (B)
05500 PUSHJ P,MEMDP
05600 POPJ P,
05700 STAABY: PUSHJ P,ABY
05800 HRRZI (B)
05900 PUSHJ P,MEMDP
06000 POPJ P,
00100 PUTCH: HRRZI MA,PONE(SP)
00200 PUSHJ P,MEMDP
00300 SOSGE SP
00400 HRRZI SP,NEG1
00500 POPJ P,
00600
00700 PUL: AOJ SP,
00800 TDZ SP,ZWD
00900 HRRZI MA,PONE(SP)
01000 PUSHJ P,MFTCH
01100 POPJ P,
01200
01300 PUPC: PUSHJ P,IFTCH
01400 HRRZI (PC)
01500 LSH -10
01600 PUSHJ P,PUTCH
01700 HRRZI (PC)
01800 PUSHJ P,PUTCH
01900 POPJ P,
02000
02100 NZTST: TRZ PS,NBIT∨ZBIT
02200 SKIPN
02300 TROE PS,ZBIT
02400 TRNN NBIT
02500 POPJ P,
02600 TRO PS,NBIT
02700 POPJ P,
02800
02900 CNZTST: TRZ PS,CBIT
03000 TDZE ZWD
03100 TRO PS,CBIT
03200 PUSHJ P,NZTST
03300 POPJ P,
03400
03500 BITS: TRZ PS,NBIT∨VBIT∨ZBIT
03600 TRNE NBIT
03700 TRO PS,NBIT
03800 TRNE VBIT
03900 TRO PS,VBIT
04000 SKIPN
04100 TRO PS,ZBIT
04200 POPJ P,
04300
04400 BRNCH: TRNE DR,NBIT
04500 TDO DR,ZWD
04600 ADD PC,DR
04700 TDZ ZWD16
04800 POPJ P,
04900
05000 BRT: PUSHJ P,IFTCH
05100 TRNE PS,(B)
05200 PUSHJ P,BRNCH
05300 POPJ P,
05400
05500 BRF: PUSHJ P,IFTCH
05600 TRNN PS,(B)
05700 PUSHJ P,BRNCH
05800 POPJ P,
00100 ORAC: OR A
00200 PUSHJ P,NZTST
00300 HRRZ A,
00400 POPJ P,
00500
00600 ASLF: LSH 1
00700 PUSHJ P,CNZTST
00800 POPJ P,
00900
01000 AAND: AND A
01100 PUSHJ P,NZTST
01200 HRRZ A,
01300 POPJ P,
01400
01500 EORA: XORI (A)
01600 PUSHJ P,NZTST
01700 HRRZ A,
01800 POPJ P,
01900
02000 LSRT: TRZ PS,NBIT∨ZBIT∨CBIT
02100 TRNE 1
02200 TRO PS,CBIT
02300 LSH -1
02400 SKIPN
02500 TRO PS,ZBIT
02600 POPJ P,
02700
02800 ROLF: LSH 1
02900 TRNE PS,CBIT
03000 TRO 1
03100 PUSHJ P,CNZTST
03200 POPJ P,
03300
03400 INCM: AOJ
03500 TRZ ZHW
03600 PUSHJ P,NZTST
03700 POPJ P,
03800
03900 DECM: SOSGE
04000 HRRZI NEG1
04100 PUSHJ P,NZTST
04200 POPJ P,
00100 ADDER: TRZ PS,VBIT
00200 TRNN NBIT
00300 JRST POS
00400 PUSHJ P,ALUX
00500 TRNE B,NBIT
00600 TRNE PS,NBIT
00700 POPJ P,
00800 JRST OV
00900
01000 POS: PUSHJ P,ALUX
01100 TRNN B,NBIT
01200 TRNN PS,NBIT
01300 POPJ P,
01400 OV: TRO PS,VBIT
01500 POPJ P,
01600
01700 ALUX: ADDI (B)
01800 TRNE PS,CBIT
01900 AOJ
02000 PUSHJ P,CNZTST
02100 POPJ P,
02200
02300 SUBER: TRC NEG1
02400 PUSHJ P,ADDER
02500 POPJ P,
02600
02700 ADCA: HRRZI B,(A)
02800 PUSHJ P,ADDER
02900 HRRZ A,
03000 POPJ P,
03100
03200 SBCA: HRRZI B,(A)
03300 PUSHJ P,SUBER
03400 HRRZ A,
03500 POPJ P,
03600
03700 CMPER: TRC NEG1
03800 TRO PS,CBIT
03900 PUSHJ P,ALUX
04000 POPJ P,
04100
04200 CMPM: HRRZI B,(A)
04300 PUSHJ P,CMPER
04400 POPJ P,
04500 CPXM: HRRZI B,(X)
04600 PUSHJ P,CMPER
04700 POPJ P,
04800 CPYM: HRRZI B,(Y)
04900 PUSHJ P,CMPER
05000 POPJ P,
00100 INSTBL:
00200 [ TRO PS,BRKBIT ;BRK 0
00300 PUSHJ P,PUPC
00400 PUSHJ P,@INSTBL+PHP
00500 TRO PS,IBIT
00600 HRRZI PC,IRQV
00700 PUSHJ P,@INSTBL+JMP
00800 POPJ P,]
00900 [ PUSHJ P,INDX ;ORAIX 1
01000 PUSHJ P,ORAC
01100 POPJ P,]
01200 UDO
01300 UDO
01400 UDO
01500 [ PUSHJ P,ZPAGE ;ORAZ 5
01600 PUSHJ P,ORAC
01700 POPJ P,]
01800 [ PUSHJ P,ZPAGE ;ASLZ 6
01900 PUSHJ P,ASLF
02000 PUSHJ P,MEMDP
02100 POPJ P,]
02200 UDO
02300
02400 [ HRRZI (PS) ;PHP 10
02500 PUSHJ P,PUTCH
02600 POPJ P,]
02700 [ PUSHJ P,IFTCH ;ORAI 11
02800 PUSHJ P,ORAC
02900 POPJ P,]
03000 [ HRRZI (A) ;ASLA 12
03100 PUSHJ P,ASLF
03200 HRRZ A,
03300 POPJ P,]
03400 UDO
03500 UDO
03600 [ PUSHJ P,ABS ;ORA 13
03700 PUSHJ P,ORAC
03800 POPJ P,]
03900 [ PUSHJ P,ABS ;ASL 14
04000 PUSHJ P,ASLF
04100 PUSHJ P,MEMDP
04200 POPJ P,]
04300 UDO
04400
04500 [ HRRZI B,NBIT ;BPL
04600 PUSHJ P,BRF
04700 POPJ P,]
04800 [ PUSHJ P,INDY ;ORAIY
04900 PUSHJ P,ORAC
05000 POPJ P,]
05100 UDO
05200 UDO
05300 UDO
05400 [ PUSHJ P,ZPX ;ORAZ
05500 PUSHJ P,ORAC
05600 POPJ P,]
05700 [ PUSHJ P,ZPX ;ASLZ
05800 PUSHJ P,ASLF
05900 PUSHJ P,MEMDP
06000 POPJ P,]
06100 UDO
00100 [ TRZ PS,CBIT ;CLC
00200 POPJ P,]
00300 [ PUSHJ P,ABY ;ORAY
00400 PUSHJ P,ORAC
00500 POPJ P,]
00600 UDO
00700 UDO
00800 UDO
00900 [ PUSHJ P,ABX ;ORAX
01000 PUSHJ P,ORAC
01100 POPJ P,]
01200 [ PUSHJ P,ABX ;ASLX
01300 PUSHJ P,ASLF
01400 PUSHJ P,MEMDP
01500 POPJ P,]
01600 UDO
01700
01800 [ HRRZI 1(PC) ;JSR
01900 LSH -10
02000 PUSHJ P,PUTCH
02100 HRRZI 1(PC)
02200 PUSHJ P,PUTCH
02300 PUSHJ P,@INSTBL+JMP
02400 POPJ P,]
02500 [ PUSHJ P,INDX ;ANDIX
02600 PUSHJ P,AAND
02700 POPJ P,]
02800 UDO
02900 UDO
03000 [ PUSHJ P,ZPAGE ;BITZ
03100 PUSHJ P,BITS
03200 POPJ P,]
03300 [ PUSHJ P,ZPAGE ;ANDZ
03400 PUSHJ P,AAND
03500 POPJ P,]
03600 [ PUSHJ P,ZPAGE ;ROLZ
03700 PUSHJ P,ROLF
03800 PUSHJ P,MEMDP
03900 POPJ P,]
04000 UDO
00100 [ PUSHJ P,PUL ;PLP
00200 HRRZ PS,
00300 POPJ P,]
00400 [ PUSHJ P,IFTCH ;ANDI
00500 PUSHJ P,AAND
00600 POPJ P,]
00700 [ HRRZI (A) ;ROLA
00800 PUSHJ P,ROLF
00900 HRRZ A,
01000 POPJ P,]
01100 UDO
01200 [ PUSHJ P,ABS
01300 PUSHJ P,BITS
01400 POPJ P,]
01500 [ PUSHJ P,ABS
01600 PUSHJ P,AAND
01700 POPJ P,]
01800 [ PUSHJ P,ABS
01900 PUSHJ P,ROLF
02000 PUSHJ P,MEMDP
02100 POPJ P,]
02200 UDO
02300
02400 [ HRRZI B,NBIT
02500 PUSHJ P,BRT
02600 POPJ P,]
02700 [ PUSHJ P,INDY
02800 PUSHJ P,AAND
02900 POPJ P,]
03000 UDO
03100 UDO
03200 UDO
03300 [ PUSHJ P,ZPX
03400 PUSHJ P,AAND
03500 POPJ P,]
03600 [ PUSHJ P,ZPX
03700 PUSHJ P,ROLF
03800 PUSHJ P,MEMDP
03900 POPJ P,]
04000 UDO
04100
04200 [ TRO PS,CBIT
04300 POPJ P,]
04400 [ PUSHJ P,ABY
04500 PUSHJ P,AAND
04600 POPJ P,]
04700 UDO
04800 UDO
04900 UDO
05000 [ PUSHJ P,ABX
05100 PUSHJ P,AAND
05200 POPJ P,]
05300 [ PUSHJ P,ABX
05400 PUSHJ P,ROLF
05500 PUSHJ P,MEMDP
05600 POPJ P,]
05700 UDO
00100 [ PUSHJ P,PUL ;RTI
00200 HRRZ PS,
00300 PUSHJ P,@INSTBL+RTS
00400 SOJ PC,
00500 POPJ P,]
00600 [ PUSHJ P,INDX ;EROIX
00700 PUSHJ P,EORA
00800 POPJ P,]
00900 UDO
01000 UDO
01100 UDO
01200 [ PUSHJ P,ZPAGE ;EORZ
01300 PUSHJ P,EORA
01400 POPJ P,]
01500 [ PUSHJ P,ZPAGE ;LSRZ
01600 PUSHJ P,LSRT
01700 PUSHJ P,MEMDP
01800 POPJ P,]
01900 UDO
02000
02100 [ HRRZI (A) ;PHA
02200 PUSHJ P,PUTCH
02300 POPJ P,]
02400 [ PUSHJ P,IFTCH ;EORI
02500 PUSHJ P,EORA
02600 POPJ P,]
02700 [ HRRZI (A) ;LSRA
02800 PUSHJ P,LSRT
02900 HRRZ A,
03000 POPJ P,]
03100 UDO
03200 [ PUSHJ P,AFTCH ;JMP
03300 HRRZI PC,(MA)
03400 POPJ P,]
03500 [ PUSHJ P,ABS ;EOR
03600 PUSHJ P,EORA
03700 POPJ P,]
03800 [ PUSHJ P,ABS ;LSR
03900 PUSHJ P,LSRT
04000 PUSHJ P,MEMDP
04100 POPJ P,]
04200 UDO
00100 [ HRRZI B,VBIT ;BVC
00200 PUSHJ P,BRF
00300 POPJ P,]
00400 [ PUSHJ P,INDY ;EORIY
00500 PUSHJ P,EORA
00600 POPJ P,]
00700 UDO
00800 UDO
00900 UDO
01000 [ PUSHJ P,ZPX ;EORZX
01100 PUSHJ P,EORA
01200 POPJ P,]
01300 [ PUSHJ P,ZPX ;LSRZX
01400 PUSHJ P,LSRT
01500 PUSHJ P,MEMDP
01600 POPJ P,]
01700 UDO
01800
01900 [ TRZ PS,IBIT ;CLI
02000 POPJ P,]
02100 [ PUSHJ P,ABY ;EORY
02200 PUSHJ P,EORA
02300 POPJ P,]
02400 UDO
02500 UDO
02600 UDO
02700 [ PUSHJ P,ABX ;EORX
02800 PUSHJ P,EORA
02900 POPJ P,]
03000 [ PUSHJ P,ABX ;LSRX
03100 PUSHJ P,LSRT
03200 PUSHJ P,MEMDP
03300 POPJ P,]
03400 UDO
00100 [ PUSHJ P,PUL ;RTS
00200 HRRZ PC,
00300 PUSHJ P,PUL
00400 LSH 10
00500 OR PC,
00600 AOJ PC,
00700 TDZ PC,ZWD16
00800 POPJ P,]
00900 [ PUSHJ P,INDX ;ADCIX
01000 PUSHJ P,ADCA
01100 POPJ P,]
01200 UDO
01300 UDO
01400 UDO
01500 [ PUSHJ P,ZPAGE ;ADCZ
01600 PUSHJ P,ADCA
01700 POPJ P,]
01800 UDO ;[ PUSHJ P,ZPAGE ;RORZ
01900 ; PUSHJ P,RORA
02000 UDO
02100
02200 [ PUSHJ P,PUL ;PLA
02300 HRRZ A,
02400 POPJ P,]
02500 [ PUSHJ P,IFTCH
02600 PUSHJ P,ADCA
02700 POPJ P,]
02800 UDO
02900 UDO
03000 [ PUSHJ P,ABS ;JMPIN
03100 HRRZ PC,
03200 AOJ MA,
03300 PUSHJ P,MFTCH
03400 LSH 10
03500 OR PC,
03600 PUSHJ P,@INSTBL+JMP
03700 POPJ P,]
03800 [ PUSHJ P,ABS
03900 PUSHJ P,ADCA
04000 POPJ P,]
04100 UDO
04200 UDO
04300
04400 [ HRRZI B,VBIT
04500 PUSHJ P,BRT
04600 POPJ P,]
04700 [ PUSHJ P,INDY
04800 PUSHJ P,ADCA
04900 POPJ P,]
05000 UDO
05100 UDO
05200 UDO
05300 [ PUSHJ P,ZPX
05400 PUSHJ P,ADCA
05500 POPJ P,]
05600 UDO
05700 UDO
00100 [ TRO PS,IBIT ;SEI
00200 POPJ P,]
00300 [ PUSHJ P,ABY ;ADCY
00400 PUSHJ P,ADCA
00500 POPJ P,]
00600 UDO
00700 UDO
00800 UDO
00900 [ PUSHJ P,ABX
01000 PUSHJ P,ADCA
01100 POPJ P,]
01200 UDO
01300 UDO
01400
01500 UDO
01600 [ HRRZI B,(A)
01700 PUSHJ P,STIX
01800 POPJ P,]
01900 UDO
02000 UDO
02100 [ HRRZI B,(Y)
02200 PUSHJ P,STZ
02300 POPJ P,]
02400 [ HRRZI B,(A)
02500 PUSHJ P,STZ
02600 POPJ P,]
02700 [ HRRZI B,(X)
02800 PUSHJ P,STZ
02900 POPJ P,]
03000 UDO
03100
03200 [ HRRZI (Y)
03300 PUSHJ P,DECM
03400 HRRZ Y,
03500 POPJ P,]
03600 UDO
03700 [ HRRZI (X)
03800 PUSHJ P,NZTST
03900 HRRZI A,(X)
04000 POPJ P,]
04100 UDO
04200 [ HRRZI B,(Y)
04300 PUSHJ P,STAAB
04400 POPJ P,]
04500 [ HRRZI B,(A)
04600 PUSHJ P,STAAB
04700 POPJ P,]
04800 [ HRRZI B,(X)
04900 PUSHJ P,STAAB
05000 POPJ P,]
05100 UDO
00100 [ HRRZI B,CBIT ;BCC
00200 PUSHJ P,BRF
00300 POPJ P,]
00400 [ HRRZI B,(A)
00500 PUSHJ P,STIY
00600 POPJ P,]
00700 UDO
00800 UDO
00900 [ HRRZI B,(Y)
01000 PUSHJ P,STZX
01100 POPJ P,]
01200 [ HRRZI B,(A)
01300 PUSHJ P,STZX
01400 POPJ P,]
01500 [ HRRZI B,(X)
01600 PUSHJ P,STZY
01700 POPJ P,]
01800 UDO
01900
02000 [ HRRZI (Y)
02100 PUSHJ P,NZTST
02200 HRRZI A,(Y)
02300 POPJ P,]
02400 [ HRRZI B,(A)
02500 PUSHJ P,STAABY
02600 POPJ P,]
02700 [ HRRZI SP,(X)
02800 POPJ P,]
02900 UDO
03000 UDO
03100 [ HRRZI B,(A)
03200 PUSHJ P,STAABX
03300 POPJ P,]
03400 UDO
03500 UDO
03600
03700 [ PUSHJ P,LDIM
03800 HRRZ Y,
03900 POPJ P,]
04000 [ PUSHJ P,LDIX
04100 HRRZ A,
04200 POPJ P,]
04300 [ PUSHJ P,LDIM
04400 HRRZ X,
04500 POPJ P,]
04600 UDO
04700 [ PUSHJ P,LDZ
04800 HRRZ Y,
04900 POPJ P,]
05000 [ PUSHJ P,LDZ
05100 HRRZ A,
05200 POPJ P,]
05300 [ PUSHJ P,LDZ
05400 HRRZ X,
05500 POPJ P,]
05600 UDO
00100 [ HRRZI (A)
00200 PUSHJ P,NZTST
00300 HRRZI Y,(A)
00400 POPJ P,]
00500 [ PUSHJ P,LDIM
00600 HRRZ A,
00700 POPJ P,]
00800 [ HRRZI (A)
00900 PUSHJ P,NZTST
01000 HRRZI X,(A)
01100 POPJ P,]
01200 UDO
01300 [ PUSHJ P,LDAAB
01400 HRRZ Y,
01500 POPJ P,]
01600 [ PUSHJ P,LDAAB
01700 HRRZ A,
01800 POPJ P,]
01900 [ PUSHJ P,LDAAB
02000 HRRZ X,
02100 POPJ P,]
02200 UDO
02300
02400 [ HRRZI B,CBIT ;BCS
02500 PUSHJ P,BRT
02600 POPJ P,]
02700 [ PUSHJ P,LDIY ;LDAIY
02800 HRRZ A,
02900 POPJ P,]
03000 UDO
03100 UDO
03200 [ PUSHJ P,LDZX
03300 HRRZ Y,
03400 POPJ P,]
03500 [ PUSHJ P,LDZX
03600 HRRZ A,
03700 POPJ P,]
03800 [ PUSHJ P,LDZY
03900 HRRZ X,
04000 POPJ P,]
04100 UDO
04200
04300 [ TRZ PS,VBIT
04400 POPJ P,]
04500 [ PUSHJ P,LDAABY ;LDAY
04600 HRRZ A,
04700 POPJ P,]
04800 [ HRRZI X,(SP)
04900 POPJ P,]
05000 UDO
05100 [ PUSHJ P,LDAABX
05200 HRRZ Y,
05300 POPJ P,]
05400 [ PUSHJ P,LDAABX
05500 HRRZ A,
05600 POPJ P,]
05700 [ PUSHJ P,LDAABY
05800 HRRZ X,
05900 POPJ P,]
06000 UDO
00100 [ PUSHJ P,IFTCH
00200 PUSHJ P,CPYM
00300 POPJ P,]
00400 [ PUSHJ P,INDX
00500 PUSHJ P,CMPM
00600 POPJ P,]
00700 UDO
00800 UDO
00900 [ PUSHJ P,ZPAGE
01000 PUSHJ P,CPYM
01100 POPJ P,]
01200 [ PUSHJ P,ZPAGE
01300 PUSHJ P,CMPM
01400 POPJ P,]
01500 [ PUSHJ P,ZPAGE
01600 PUSHJ P,DECM
01700 PUSHJ P,MEMDP
01800 POPJ P,]
01900 UDO
02000
02100 [ HRRZI (Y)
02200 PUSHJ P,INCM
02300 HRRZ Y,
02400 POPJ P,]
02500 [ PUSHJ P,IFTCH
02600 PUSHJ P,CMPM
02700 POPJ P,]
02800 [ HRRZI (X)
02900 PUSHJ P,DECM
03000 HRRZ X,
03100 POPJ P,]
03200 UDO
03300 [ PUSHJ P,ABS
03400 PUSHJ P,CPYM
03500 POPJ P,]
03600 [ PUSHJ P,ABS
03700 PUSHJ P,CMPM
03800 POPJ P,]
03900 [ PUSHJ P,ABS
04000 PUSHJ P,DECM
04100 PUSHJ P,MEMDP
04200 POPJ P,]
04300 UDO
04400
04500 [ HRRZI B,ZBIT
04600 PUSHJ P,BRF
04700 POPJ P,]
04800 [ PUSHJ P,INDY
04900 PUSHJ P,CMPM
05000 POPJ P,]
05100 UDO
05200 UDO
05300 UDO
05400 [ PUSHJ P,ZPX
05500 PUSHJ P,CMPM
05600 POPJ P,]
05700 [ PUSHJ P,ZPX
05800 PUSHJ P,DECM
05900 PUSHJ P,MEMDP
06000 POPJ P,]
06100 UDO
00100 [ TRZ PS,DBIT
00200 POPJ P,]
00300 [ PUSHJ P,ABY
00400 PUSHJ P,CMPM
00500 POPJ P,]
00600 UDO
00700 UDO
00800 UDO
00900 [ PUSHJ P,ABX
01000 PUSHJ P,CMPM
01100 POPJ P,]
01200 [ PUSHJ P,ABX
01300 PUSHJ P,DECM
01400 PUSHJ P,MEMDP
01500 POPJ P,]
01600 UDO
01700
01800 [ PUSHJ P,IFTCH
01900 PUSHJ P,CPXM
02000 POPJ P,]
02100 [ PUSHJ P,INDX
02200 PUSHJ P,SBCA
02300 POPJ P,]
02400 UDO
02500 UDO
02600 [ PUSHJ P,ZPAGE
02700 PUSHJ P,CPXM
02800 POPJ P,]
02900 [ PUSHJ P,ZPAGE
03000 PUSHJ P,SBCA
03100 POPJ P,]
03200 [ PUSHJ P,ZPAGE
03300 PUSHJ P,INCM
03400 PUSHJ P,MEMDP
03500 POPJ P,]
03600 UDO
03700
03800 [ HRRZI (X)
03900 PUSHJ P,INCM
04000 HRRZ X,
04100 POPJ P,]
04200 [ PUSHJ P,IFTCH
04300 PUSHJ P,SBCA
04400 POPJ P,]
04500 [ POPJ P,]
04600 UDO
04700 [ PUSHJ P,ABS
04800 PUSHJ P,CPXM
04900 POPJ P,]
05000 [ PUSHJ P,ABS
05100 PUSHJ P,SBCA
05200 POPJ P,]
05300 [ PUSHJ P,ABS
05400 PUSHJ P,INCM
05500 PUSHJ P,MEMDP
05600 POPJ P,]
05700 UDO
00100 [ HRRZI B,ZBIT
00200 PUSHJ P,BRT
00300 POPJ P,]
00400 [ PUSHJ P,INDY
00500 PUSHJ P,SBCA
00600 POPJ P,]
00700 UDO
00800 UDO
00900 UDO
01000 [ PUSHJ P,ZPX
01100 PUSHJ P,SBCA
01200 POPJ P,]
01300 [ PUSHJ P,ZPX
01400 PUSHJ P,INCM
01500 PUSHJ P,MEMDP
01600 POPJ P,]
01700 UDO
01800
01900 [ TRO PS,DBIT
02000 POPJ P,]
02100 [ PUSHJ P,ABY
02200 PUSHJ P,SBCA
02300 POPJ P,]
02400 UDO
02500 UDO
02600 UDO
02700 [ PUSHJ P,ABX
02800 PUSHJ P,SBCA
02900 POPJ P,]
03000 [ PUSHJ P,ABX
03100 PUSHJ P,INCM
03200 PUSHJ P,MEMDP
03300 POPJ P,]
03400 UDO
00100 IBUF: BLOCK 4
00200 FILNAM: 0
00300 FILEXT: 0
00400 0
00500 FILPPN: 0
00600
00700 GNAME: SETZM FILEXT+1
00800 SETZM FILPPN
00900 MOVE A,['DMP ']
01000 MOVEM A,FILEXT
01100 PUSHJ P,GETNAM
01200 SKIPN A
01300 MOVE A,['ROM ']
01400 GEXT: MOVEM A,FILNAM
01500 CAIE C,"."
01600 JRST NOEXTN
01700 PUSHJ P,GETNAM
01800 MOVEM A,FILEXT
01900 NOEXTN: CAIE C,"["
02000 JRST FFDX
02100 PUSHJ P,GETP
02200 HRLZM A,FILPPN
02300 PUSHJ P,GETP
02400 HRRM A,FILPPN
02500 FFDX: INCHRW C
02600 CAIE C,12
02700 JRST FFDX
02800 POPJ P,
00100 GETNAM: MOVEI A,
00200 MOVE B,[440600,,A]
00300 GETNML: PUSHJ P,RCH
00400 POPJ P,
00500 SUBI C,40
00600 TLNE B,770000
00700 IDPB C,B
00800 JRST GETNML
00900
01000 GETP: MOVEI A,
01100 GETPL: PUSHJ P,RCH
01200 POPJ P,
01300 TRNE A,770000
01400 JRST GETPL
01500 LSH A,6
01600 ADDI A,-40(C)
01700 JRST GETPL
01800
01900 RCH: INCHWL C
02000 CAIN C,42
02100 JRST RCHQ
02200 CAIE C,11
02300 CAIN C," "
02400 JRST RCH
02500 CAIE C,"."
02600 CAIN C,","
02700 POPJ P,
02800 CAIE C,"["
02900 CAIN C,"]"
03000 POPJ P,
03100 RCHQR: CAIGE C,40
03200 POPJ P,
03300 CAIL C,"a"
03400 CAILE C,"z"
03500 CAIA
03600 SUBI C,40
03700 POPJ1: AOS (P)
03800 POPJ P,
03900
04000 RCHQ: INCHWL C
04100 JRST RCHQR
04200
04300 MEM: BLOCK 100000
04400 END STAR